/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package bs.stock.web;

import bs.global.excepciones.ExcepcionGeneralSistema;
import bs.stock.modelo.ComprobanteStock;
import bs.stock.modelo.Deposito;
import bs.stock.modelo.Producto;
import bs.stock.modelo.TipoProducto;
import bs.stock.modelo.UnidadMedida;
import bs.stock.rn.MovimientoStockRN;
import bs.stock.rn.DepositoRN;
import bs.stock.rn.ProductoRN;
import bs.stock.rn.TipoProductoRN;
import bs.stock.rn.UnidadMedidaRN;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

/**
 *
 * @author ctrosch
 */
@ManagedBean (name="conversoresInventario")
@SessionScoped
public class ConversoresInventario {
    
    @EJB private MovimientoStockRN comprobanteRN;
    @EJB private ProductoRN productoRN;
    @EJB private DepositoRN depositoRN;
    @EJB private TipoProductoRN tipoProductoRN;
    @EJB private UnidadMedidaRN unidadMedidaRN;


    /** Creates a new instance of ConversoresBean */
    public ConversoresInventario() {
        
    }

    public Converter getComprobante() {
        return new Converter() {

            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }

                ComprobanteStock c=null;
                try {
                    c = comprobanteRN.getComprobante("ST", value);
                } catch (ExcepcionGeneralSistema ex) {
                    Logger.getLogger(ConversoresInventario.class.getName()).log(Level.SEVERE, null, ex);
                }
                return c;
            }

            @Override
            public String getAsString(FacesContext context, UIComponent component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {

                    return ((ComprobanteStock) value).getCodigo() + "";
                }
            }
        };
    }

    public Converter getProducto() {
        return new Converter() {

            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }

                Producto p = productoRN.getProducto(value);
                return p;
            }

            @Override
            public String getAsString(FacesContext context, UIComponent component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {

                    return ((Producto) value).getCodigo() + "";
                }
            }
        };
    }

    public Converter getDeposito() {
        return new Converter() {

            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }

                Deposito d = depositoRN.getDeposito(value);
                return d;
            }

            @Override
            public String getAsString(FacesContext context, UIComponent component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {

                    return ((Deposito) value).getCodigo() + "";
                }
            }
        };
    }

    public Converter getTipoProducto() {
        return new Converter() {

            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }

                TipoProducto t = tipoProductoRN.getTipoProducto(value);
                return t;
            }

            @Override
            public String getAsString(FacesContext context, UIComponent component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {

                    return ((TipoProducto) value).getTippro() + "";
                }
            }
        };
    }

    public Converter getUnidadMedida() {
        return new Converter() {

            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String value) {
                if (value.trim().equals("") || value == null) {
                    return null;
                }

                UnidadMedida d = unidadMedidaRN.getUnidadMedida(value);
                return d;
            }

            @Override
            public String getAsString(FacesContext context, UIComponent component, Object value) {
                if (value == null || value.equals("")) {
                    return "";
                } else {

                    return ((UnidadMedida) value).getCodigo()+ "";
                }
            }
        };
    }



   
}
